package dongshi.daddy.main;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.rpc.RpcContext;
import dongshi.daddy.service.MyProviderTokenService;

public class ConsumerWithTokenApiMain {

    public static void main(String[] args) {
        // 当前应用配置
        ApplicationConfig application = new ApplicationConfig();
        application.setName("dongshidaddy-consumer");
        application.setOwner("dongshidaddy");

        // 连接注册中心配置
        RegistryConfig registry = new RegistryConfig();
//        registry.setAddress("zookeeper://192.168.10.119:2181");
        registry.setAddress("N/A");

        RpcContext.getContext().setAttachment("token", "12345678");
        // 注意：ReferenceConfig为重对象，内部封装了与注册中心的连接，以及与服务提供方的连接

        // 引用远程服务
        ReferenceConfig<MyProviderTokenService> reference = new ReferenceConfig<MyProviderTokenService>(); // 此实例很重，封装了与注册中心的连接以及与提供者的连接，请自行缓存，否则可能造成内存和连接泄漏
        reference.setApplication(application);
        reference.setRegistry(registry); // 多个注册中心可以用setRegistries()
        reference.setInterface(MyProviderTokenService.class);
        reference.setUrl("dubbo://192.168.10.119:20827");

        // 和本地bean一样使用xxxService
        MyProviderTokenService myProviderTokenService = reference.get(); // 注意：此代理对象内部封装了所有通讯细节，对象较重，请缓存复用
        String s = myProviderTokenService.sayHi("hello dubbo1");
        System.out.println(s);
    }
}

